package com.cskaoyan.javase.oop2._1extends._7initialization._3constructor;
/**
 * 子类new对象时,构造器的执行是先父后子的
 * 但是具体来说,从方法的栈帧进栈来说
 * 是底层子类的构造器方法栈帧先进栈,但是不会执行,而是依次往上找父类构造器
 * 直到找到最顶层父类Object的构造器
 *
 * 实际上在创建Java任何一个类的对象时
 *      都会执行Object类的构造器,Object类只有一个构造器,默认无参
 *
 * @since 11:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        new Son();
    }
}
class Grandfather {
    public Grandfather() {
        // super()指向Object类的无参构造器
        System.out.println("gf");
    }
}

class Father extends Grandfather {
    public Father() {
        System.out.println("f");
    }
}

class Son extends Father {
    public Son() {
        System.out.println("s");
    }
}
